$(function () {
    if (useInfo) {
        // 用户已经登陆
        $.get(baseUrl + '/cart/lists', {
            userId: useInfo.id
        }, function (res) {
            console.log(res);
            // 调用自定义函数显示
            showUserCart(res.data);
        }, 'json')
    } else {
        // 未登录
        // 取出localStorage里的值并添加到goodIds数组中
        let userCart = localStorage.getItem('cart') ? JSON.parse(localStorage.getItem('cart')) : {};
        let goodsIds = [];
        for (key in userCart) {
            goodsIds.push(key);
        }
        console.log(goodsIds);

        // 获取商品信息
        if (goodsIds.length > 0) {
            $.post(baseUrl + '/goods/getGoodsByIds', {
                goodsIds
            }, function (res) {
                // console.log(res);
                // 转换获取到的商品数据格式
                let data = [];
                res.data.forEach(function (item, index) {
                    data.push({
                        goodsId: item.id,
                        goodsCount: userCart[item.id],
                        goods: item
                    })
                })
                // console.log(data);
                showUserCart(data);
            }, 'json')
        }
    }

    // 增加数量
    $('.shoppingBar').on('click', '.add_num', function () {
        // 获取现在的商品数量  this 表示点击的对象。按照原生this应该代表父元素的dom对象
        let goodsCount = parseInt($(this).prev().text()) + 1;
        // $(this).parent().parent() 表示当前需要修改的tr标签对应的jQuery对象
        changeGoodsNumber(goodsCount, $(this).parent().parent());
        total();
    })
    // 减少数量
    $('.shoppingBar').on('click', '.reduce_num', function () {
        let goodsCount = $(this).next().text();
        if (goodsCount <= 1) {
            layer.msg('数量最少一件', {
                icon: 0,
                time: 2000
            })
            return false;
        }
        changeGoodsNumber(goodsCount - 1, $(this).parent().parent());
        total();
    })

    // 勾选操作 计算商品数量和总价操作
    $('.shoppingBar').on('click', '.input', function () {
        // 勾选数量等于商品总数时，全选框选中
        if ($('.shoppingBar .input:checked').length == $('.shoppingBar .input').length) {
            $('.all').prop('checked', true);
        } else {
            $('.all').prop('checked', false);
        };
        total();
    });
    // 全选框选中时，所有商品都选中 全选框取消选中时 所有商品取消选中
    $('.all').on('click', function () {
        if ($('.all').prop('checked')) {
            console.log(123);
            $('.input').attr('checked', 'checked')
        } else {
            $('.input').removeAttr('checked')
        }
        total();
    })

    // 删除商品
    $('.shoppingBar').on('click', '.glyphicon ', function () {
        $(this).parent().parent().remove();
        total();


        let elem = $(this).parent().parent();
        if (useInfo) {
            // 用户登录的情况下删除商品
            let data = {
                cartId: elem.data('cartid'),
                userId: useInfo.id
            }
            $.get(baseUrl + '/cart/remove', data, function (res) {
                console.log(res);
            }, 'json')

        } else {
            // 用户未登录的情况下删除商品
            let userCart = localStorage.getItem('cart') ? JSON.parse(localStorage.getItem('cart')) : {};
            let id = elem.data('goodsid')
            delete userCart[id];
            localStorage.setItem('cart', JSON.stringify(userCart));
        }
    })

    // 清空购物车
    $('.delAll').on('click', function () {
        console.log($(this));
        $(this).parent().parent().prev().find('.commodity').remove();
        total();
        if (useInfo) {
            $.get(baseUrl + '/cart/clear', {
                userId: useInfo.id
            }, function () {
                // console.log(res);
            }, 'json');
        } else {
            let userCart = localStorage.getItem('cart') ? JSON.parse(localStorage.getItem('cart')) : {};
            $('.shoppingBar .commodity').each(function (index, item) {
                delete userCart[$(item).data('goodsid')];
            })
            localStorage.setItem('cart', JSON.stringify(userCart));
        }

        // location.reload();
    })

    // 自定义渲染页面函数
    function showUserCart(data) {
        // 获取到当前被勾选的商品id 
        let selectedGoods = getParam('selectedGoods')?getParam('selectedGoods').split(','):[];
        $('.commodity').remove();
        let html = '';
        data.forEach((item, index) => {
            // 判读当前循环的商品是否在选中的商品中
            let flag = (selectedGoods.indexOf(item.goodsId+'') ==-1)?false:true;
            html += `<tr class="commodity" data-goodsid="${item.goodsId}" data-cartid="${item.id?item.id:0}">
            <th><input type="checkbox" class="input" ${flag?'checked':''} value="${item.id?item.id:0}"></th>
            <th class="content"><img src="${item.goods.goodsThumb}" width="100px" height="100px">
                <p>${item.goods.goodsName} </p>
            </th>
            <th><button type="button" class="reduce_num layui-btn layui-btn-primary layui-border-green">
                    -
                </button> <span>
                ${item.goodsCount}
                </span> <button type="button" class="add_num layui-btn layui-btn-primary layui-border-green">
                    +
                </button></th>
            <th class="price">
            ${item.goods.shopPrice}
            </th>
            <th class="money">
            ${item.goods.shopPrice * item.goodsCount}
            </th>
            <th><a href="javascript:;" class="glyphicon glyphicon-remove">删除
                </a></th>
        </tr>`;
        });
        $('.shoppingBar tbody').append(html);
    }

    // 修改购物车中商品的数量
    // goodsCount参数表示需要设置的数量是多少 elem表示修改的对应的tr标签的对象
    function changeGoodsNumber(goodsCount, elem) {
        // 修改显示的数量
        elem.find('span').text(goodsCount);
        // 修改小计金额
        let money = goodsCount * elem.find('.price').text();
        elem.find('.money').text(money);

        let goodsId = elem.data('goodsid');
        if (!useInfo) {
            // 没有登录
            let userCart = localStorage.getItem('cart') ? JSON.parse(localStorage.getItem('cart')) : {};
            // 修改购物车数据中商品数量
            userCart[goodsId] = goodsCount;
            localStorage.setItem('cart', JSON.stringify(userCart));
        } else {
            // 已经登录
            let data = {
                userId: useInfo.id,
                cartId: elem.data('cartid'),
                goodsId,
                goodsCount
            }
            $.post(baseUrl + '/cart/change', data, (res) => {
                console.log(res);
            });
        }
    }

    // 获取到数量和总价
    function total() {
        let totalNumber = 0,
            totalMoney = 0;
        $('.shoppingBar .input:checked').each(function (index, item) {

            totalNumber += parseInt($(item).parent().next().next().find('span').text());
            totalMoney += parseInt($(item).parent().parent().find('.money').text())
        })
        /*  console.log(totalNumber);
         console.log(totalMoney); */
        let html = `<span>
                        ${totalNumber}
                    </span>
                    件商品总计:
                    <span>
                        ￥${totalMoney}
                    </span>`;
        $('.buy').html(html);
    }

    // 点击结算事件
    $('#go').click(function(){
        if(!useInfo){
            // 用户没有登录的情况  
            // 获取到当前被勾选商品ID 不能传递购物车ID。最终商品ID的信息通过登录后回跳就可以获取到。最后在做选中判断
            // 保存当前被选中的商品ID
            let selectedGoods = [];
            $('.input:checked').each((index,elem)=>{
                selectedGoods.push($(elem).parent().parent().data('goodsid'));
            });
            // encodeURIComponent属于js内置的函数可以将URL进行编码转移
            let callback = encodeURIComponent('http://xiaomi-shop.com/car.html?selectedGoods='+selectedGoods.join(','));
            console.log(callback);
            location.href = 'login.html?callback='+callback;
        }else{
            // 用户已经登录
            // 获取到当前被选中的购物车ID
            let selectedGoods= [];
            $('.shoppingBar input:checked').each((index,item)=>{
                selectedGoods.push($(item).val());
                console.log(selectedGoods);
            });
            if(selectedGoods.length>0){
                //由于需要携带参数，selectedGoods需要转换为字符串格式
                location.href='checkout.html?cartids='+selectedGoods.join(',');
            }
        }
        return false;
    }) 
})